﻿using FlyingCircusWebIS.Controllers.Utilidades;
using FlyingCircusWebIS.Filtros;
using FlyingCircusWebIS.Models;
using FlyingCircusWebIS.ViewModels.ModeloAeronaveVM;
using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace FlyingCircusWebIS.Controllers
{
    /** 
     * Obs: Implementação futura de funcionalidade.
     * 
     * Por enquanto os modelos são pre-estabelecidos conforme edital.
     * Sendo eles: A219, A220 E A230
     */

    //[AutenticacaoFilter("A")]
    //public class ModeloAeronaveController : Controller
    //{

    //    private ModeloAeronaveService modeloAeronaveService;

    //    public ModeloAeronaveController()
    //    {
    //        modeloAeronaveService = new ModeloAeronaveService();
    //    }


    //    public ActionResult Index()
    //    {
    //        ModeloAeronaveIndexVM vm = ConstruirIndexVM();
    //        return View(vm);
    //    }

    //    public ActionResult Form(int? id)
    //    {
    //        ModeloAeronaveFormVM vm;
    //        if (id.HasValue)
    //        {
    //            vm = ConstruirFormVMParaEdicao(id.Value);
    //            if (vm == null)
    //                return new HttpNotFoundResult();
    //        }
    //        else
    //        {
    //            vm = ConstruirFormVMParaNovo();
    //        }

    //        return View(vm);
    //    }

    //    [HttpPost]
    //    public ActionResult Form(ModeloAeronaveFormVM vm)
    //    {
    //        if (ModelState.IsValid)
    //        {
    //            ModeloAeronave registro = ConverterFormVM(vm);

    //            var erros = modeloAeronaveService.ValidarEntidade(registro);
    //            if (erros.Count == 0)
    //            {
    //                if (vm.Edicao)
    //                    modeloAeronaveService.Atualizar(registro);
    //                else
    //                    modeloAeronaveService.Adicionar(registro);

    //                return RedirectToAction("Index");
    //            }
    //            else
    //            {
    //                ModelState.AddModelErrors(erros);
    //            }
    //        }
    //        return View(vm);
    //    }

    //    public JsonResult Remover(int id)
    //    {
    //        JsonActionResultModel jarm = new JsonActionResultModel();

    //        var erros = modeloAeronaveService.ValidaRemoverPorId(id);
    //        if (erros.Count == 0)
    //        {
    //            modeloAeronaveService.RemoverPorId(id);
    //            jarm.Erro = false;
    //            jarm.Mensagem = "Registro removido com sucesso!";
    //        }
    //        else
    //        {
    //            jarm.Erro = true;
    //            jarm.Mensagem = "Não é possível remover o registro.\n";
    //            jarm.AddValidationResultErros(erros);
    //        }

    //        return Json(jarm);
    //    }

    //    // -----------------------------------------------------------------------------------------
    //    // Métodos auxiliares 
    //    // -----------------------------------------------------------------------------------------


    //    private ModeloAeronaveIndexVM ConstruirIndexVM()
    //    {
    //        ModeloAeronaveIndexVM vm = new ModeloAeronaveIndexVM();

    //        List<ModeloAeronave> registros = modeloAeronaveService.Listar();
    //        int totalRegistros = registros.Count;

    //        vm.Registros = registros;
    //        vm.TotalRegistros = totalRegistros;
    //        return vm;
    //    }

    //    private ModeloAeronave ConverterFormVM(ModeloAeronaveFormVM vm)
    //    {
    //        ModeloAeronave registro = new ModeloAeronave();
    //        registro.IdModeloAeronave = vm.IdModeloAeronave;
    //        registro.Prefixo = vm.Prefixo;
    //        registro.Assentos = vm.Assentos;
    //        registro.VelocidadeMedia = vm.VelocidadeMedia;

    //        return registro;
    //    }

    //    private ModeloAeronaveFormVM ConverterFormVM(ModeloAeronave registro)
    //    {
    //        ModeloAeronaveFormVM vm = new ModeloAeronaveFormVM();
    //        vm.IdModeloAeronave = registro.IdModeloAeronave;
    //        vm.Prefixo = registro.Prefixo;
    //        vm.Assentos = registro.Assentos;
    //        vm.VelocidadeMedia = registro.VelocidadeMedia;

    //        return vm;
    //    }

    //    private ModeloAeronaveFormVM ConstruirFormVMParaEdicao(int id)
    //    {
    //        ModeloAeronave registro = modeloAeronaveService.BuscarPorId(id);
    //        if (registro != null)
    //        {
    //            ModeloAeronaveFormVM vm = ConverterFormVM(registro);
    //            vm.Edicao = true;                

    //            return vm;
    //        }

    //        return null;

    //    }

    //    private ModeloAeronaveFormVM ConstruirFormVMParaNovo()
    //    {
    //        ModeloAeronaveFormVM vm = new ModeloAeronaveFormVM();
    //        vm.Edicao = false;            

    //        return vm;
    //    }



    //}
}
